﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Interfaces;
using Controller;

namespace GUI
{
    public partial class frmAflevereScooter : Form
    {
        List<Iordre> ordreliste;
        List<Iscooter> scooterliste;
        Iscooter valgtScooter;
        Iordre valgtOrdre;
        TimeSpan forskel;
        OrdreController oc = new OrdreController();
        int ordrenr;

        public frmAflevereScooter()
        {
            InitializeComponent();
        }

        private void frmAflevereScooter_Load(object sender, EventArgs e)
        {
            
            KundeController kc = new KundeController();

            ordreliste = oc.HentOrdrerDESC();
            foreach (Iordre item in ordreliste)
            {
                Ikunde kunde = kc.hentKunde(item.Kundenummer);
                cmbOrdre.Items.Add(item.Ordrenummer.ToString() + " - " + kunde.Navn);
            }
            
            ScooterController sc = new ScooterController();
            scooterliste = sc.HentAlleUdlejningsscootere();
            foreach (Iscooter item in scooterliste)
            {
                cmbScooter.Items.Add(item.Maerke.ToString() + " - " + item.Stelnummer.ToString());
            }
        }

        private void cmbOrdre_SelectedIndexChanged(object sender, EventArgs e)
        {
            Iordre valgtOrdre = ordreliste[cmbOrdre.SelectedIndex];
            ordrenr = valgtOrdre.Ordrenummer;
            txtIndleveret.Text = String.Format("{0:d}", valgtOrdre.Ordredato);
           
        }

        private void cmbScooter_SelectedIndexChanged(object sender, EventArgs e)
        {
            
            Iscooter scooter = scooterliste[cmbScooter.SelectedIndex];
            valgtScooter = scooter;
            txtUdlejetdato.Text = txtIndleveret.Text;
            
            txtKmFoer.Text = scooter.KmAntal.ToString();
            txtAfleveretdato.Text = String.Format("{0:d}", DateTime.Now);
            DateTime udlejningsdato = Convert.ToDateTime(txtUdlejetdato.Text);
            DateTime afleveringsdato = Convert.ToDateTime(txtAfleveretdato.Text);
            forskel = afleveringsdato - udlejningsdato;
            TimeSpan ts = new TimeSpan(1, 0, 0, 0);
            forskel = forskel.Add(ts);
            
            lblDageIalt.Text = forskel.Days.ToString();
        }

        private void btnAfslutUdlevering_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void chkBekraeft_CheckedChanged(object sender, EventArgs e)
        {
            Iordre denvalgteordre = valgtOrdre;
            ScooterController sc = new ScooterController();
            VareController vc = new VareController();
            sc.OpdaterKmAntal(valgtScooter.Stelnummer, Convert.ToInt32(txtKmNu.Text));

            int kilometerKoert = Convert.ToInt32(txtKmNu.Text) - Convert.ToInt32(txtKmFoer.Text);
            int res = Convert.ToInt32(kilometerKoert * 1.78);

            if (vc.FindesKmVare(kilometerKoert))
            {
                int varenr = vc.HentVareUdfraKm(res);
                OrdreController oc = new OrdreController();
                oc.OpretOrdreVareLinie(ordrenr, varenr);
                // Ligger forsikring til
                oc.OpretOrdreVareLinie(ordrenr, 7);
                ///////////////////////////
                int dage = forskel.Days;
                for (int i = 1; i <= dage; i++)
                {
                    oc.OpretOrdreVareLinie(ordrenr, 8);
                }
            }
            else
            {
                vc.OpretKmVare(kilometerKoert, res);
                int varenr = vc.HentSidstIndsatteVare();
                OrdreController oc = new OrdreController();
                oc.OpretOrdreVareLinie(ordrenr, varenr);
                // Ligger forsikring til
                oc.OpretOrdreVareLinie(ordrenr, 7);
                //////////////////////////
                int dage = forskel.Days;
                for (int i = 1; i <= dage; i++)
                {
                    oc.OpretOrdreVareLinie(ordrenr, 8);
                }
            }

            string[] str = { "Forsikring", "50 kr" };

            ListViewItem lvItem = new ListViewItem(str);
            string[] str1 = { "" + kilometerKoert.ToString() + " km a 1.78", "" + res.ToString() + " kr" };
            ListViewItem lvItem1 = new ListViewItem(str1);
            lstvYdelser.Items.Add(lvItem);
            lstvYdelser.Items.Add(lvItem1);
            int ialt = res + 50;
            txtPrisIalt.Text = ialt.ToString();
            sc.ScooterRetur(valgtScooter.Stelnummer);
        }
    }
}
